•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
r2
r1

(새 문서)
1[목차]
2== 개요 ==
3KT GTV 서버 환경점검을 위해 사용하는 스크립트이다.
4공통 점검 내역은 동일하게 수행하나 LSM/ADC 서버와 VOD 서버 역할이 달라 점검내용이 다른 부분이 있다.
5
6== 공통 점검 내역 ==
71. HW 모델명 확인
82. HDD 및 RAID 구성, 상태 점검
93. 시스템 로그 점검
104. NIC 사용 현황 점검
115. Bond 및 IP 설정 점검
126. Routing 점검
137. OS 버전 점검
148. OS Disk 용량 점검
159. /data Disk 용량 점검
1610. 시간동기화 점검
1711. GateWay Ping 점검
1812. 서버 부팅 관련 설정파일 점검
1913. 프로세스 서비스 이중화 상태 점검
2014. 프로세스 포트 및 상태 점검
2115. CPU 사용률 점검
22
23== LSM/ADC 서버 점검 내역 ==
241. LBAdmin 상태 점검
252. LFMServer 로그 점검
263. LFMSinkModule 로그 점검
274. CiGLBServer 로그 점검
285. L_ADS 로그 점검
296. ADSController 로그 점검
307. ADSClient 로그 점검
318. LoadBalancer2 로그 점검
32
33
34== VOD 서버 점검 내역 ==
351. CIHVODServer 로그 점검
36
37
r2
38== 스크립트 점검 결과 확인 ==
39스크립트 수행 후 모든 항목이 '''이상이 없다면''' 아래와 같이 출력된다.
40>... [br] 모든 항목이 이상없음 상태입니다.
41
42스크립트 수행 후 점검 결과에 '''이상이 있다면''' 아래와 같이 출력된다.
43> [점검필요 항목] [br] 점검 내용 : NIC 사용 현황 [br] 상태: 점검필요 [br] [br] 점검 내용 : 시간동기화 확인 [br] 상태: 점검필요 [br] ...
44
45
46
r1

(새 문서)
47== 스크립트 본문 및 사용 방법 ==
48{{{ ## 사용법 ##
491. 아래 스크립트를 복사해 서버에 .sh 파일로 만들어 준다.
50 # vim Server_Check.sh
512. 스크립트 실행 권한을 부여 한다.
52 # chmod +x Server_Check.sh
533. 스크립트 수행 시 숫자 7과 해당 서버를 명시한다.
54 LSM 서버일 경우
55 # ./Server_Check.sh 7 LSM
56 ADC 서버일 경우
57 # ./Server_Check.sh 7 ADC
58 VOD 서버일 경우
59 # ./Server_Check.sh 7 VOD
60
61
62#!/bin/bash
63# -*- coding : UTF-8 -*-
64# version : 1.0.0
65# create date : 2021-11-18
66# update date : 2025-02-10
67# ----------------------------------------------
68# Copyright (c) 2021
69# @author mir kim
70# Server_Check.sh
71
72scriptName="Server_Check.sh"
73scriptVersion="20250210"
74check_failures=""
75output_file="/home/castis/output_data_$(date +'%Y-%m-%d_%H-%M').txt"
76ENV=$(env | grep LANG)
77
78manPage="""
79 SYNOPSIS
80 ./Server_Check.sh [?|-h]
81
82 This script works as follows.
83 1. H/W 점검 결과 추출
84 2. Network 상태 점검 결과 추출
85 3. OS 상태 점검 결과 추출
86 4. 이중화 점검 결과 추출
87 5. 서비스 현황 점검 결과 추출
88 6. 종합의견 결과 추출
89 7. JSON 형식으로 반환
90
91 함수 Make_Json_List() parameter
92
93 ex) Make_Json_List 생성유형 \"점검항목 큰 제목\" \"점검항목\" \"점검기준 값\" \"상세 점검 방법\" \"점검 결과 값\" \"양호/불량\"
94
95 OPTIONS
96 ? or -h
97 Show this help message and exit
98
99 """
100
101#local functions start
102ServerName=$(hostname)
103
104# 점검 결과 Result
105Success="양호"
106Fail="불량"
107
108# server model
109Server_Product=$(dmidecode | grep Prod | head -1 | cut -d : -f2 | awk '{print $1, $2, $3, $4}')
110
111function f_Usage() {
112 echo "$manPage"
113}
114
115Item_Num=1
116
117function Make_Json_List() {
118 # echo "DEBUG: 매개변수 -> $1 | $2 | $3 | $4 | $5 | $6"
119 case $1 in
120 First_Start)
121 echo -e "--------------------------------------------"
122 echo -e "점검 내용 : $3"
123 echo -e "결과: $5"
124 echo -e "상태: $6"
125 echo -e "--------------------------------------------"
126 ;;
127 Start)
128 echo -e "점검 내용 : $3"
129 echo -e "결과: $5"
130 echo -e "상태: $6"
131 echo -e "--------------------------------------------"
132 ;;
133 Middle)
134 echo -e "점검 내용 : $3"
135 echo -e "결과: $5"
136 echo -e "상태: $6"
137 echo -e "--------------------------------------------"
138 ;;
139 End)
140 echo -e "점검 내용 : $3"
141 echo -e "결과: $5"
142 echo -e "상태: $6"
143 echo -e "--------------------------------------------"
144 ;;
145 First_Single)
146 echo -e "점검 내용 : $3"
147 echo -e "결과: $5"
148 echo -e "상태: $6"
149 echo -e "--------------------------------------------"
150 ;;
151 Single)
152 echo -e "점검 내용 : $3"
153 echo -e "결과: $5"
154 echo -e "상태: $6"
155 echo -e "--------------------------------------------"
156 ;;
157 esac
158}
159
160# H/W 점검 결과 추출
161function HW_Check() {
162 # [ H/W 모델명 확인 ]
163 Make_Json_List First_Start "HardwareCheck" "H/W 모델명. 확인" "육안확인 결과" "dmidecode | grep 'Product Name'" "$(dmidecode | grep "Product Name" | head -1 | cut -d : -f2 | awk '{print $1, $2, $3, $4}')" "$Success"
164
165 # [ HDD 용량 및 RAID 구성 점검]
166
167 # Dell 서버
168 if [[ $Server_Product =~ "PowerEdge" ]]; then
169
170 battery_status=$(omreport storage battery | grep "Status" | grep -v Ok)
171 disk_status=$(omreport storage pdisk controller=0 | grep "Power Status" -v | grep -w Status | grep -v Ok)
172
173 if [ -n "$battery_status" ] || [ -n "$disk_status" ]; then
174 Make_Json_List Middle "" "Dell HDD상태 및 RAID 구성 점검" "Fail 또는 Error 있음" "omreport storage battery" "DISK, cache_battery 점검필요" "$Fail"
175 else
176 Make_Json_List Middle "" "Dell HDD상태 및 RAID 구성 점검" "Fail 또는 Error 없음" "omreport storage pdisk controller=0" "이상없음" "$Success"
177 fi
178
179 # Gen9 서버
180 elif [[ $Server_Product =~ "Gen9" ]]; then
181 HP="hpssacli"
182
183 # Gen10 서버
184 elif [[ $Server_Product =~ "Gen10" ]]; then
185 HP="ssacli"
186
187 # G8 이하 버전 HP 서버
188 else
189 HP="hpacucli"
190 fi # 여기서 if 문을 닫습니다.
191
192 # HP 서버
193 if [ ! -z $HP ]; then
194
195 cache_battery_status=$($HP ctrl all show config detail | egrep -i "Cache Status|controller status" | grep -i "Failed")
196
197 for list in logicaldrive physicaldrive; do
198 drive_check=$($HP ctrl all show config detail | grep -i "failed")
199 case $? in
200 0)
201 drive_check+=(${list})
202 ;;
203 esac
204 done
205
206 if [ -n "$drive_check" ] || [ -n "$cache_battery_status" ]; then
207 Make_Json_List Middle "" "HPE HDD 상태 및 RAID 구성 점검" "Fail 또는 Error 있음" "$HP ctrl all show detail" "DISK 또는 cache_battery 상태 점검필요" "$Fail"
208 else
209 Make_Json_List Middle "" "HPE HDD 상태 및 RAID 구성 점검" "Fail 또는 Error 없음" "$HP ctrl all show detail" "이상없음" "$Success"
210 fi
211 fi
212
213 # [ 시스템 로그 점검]
214 Syslog=$(grep -im 11 error /var/log/messages | egrep -vc "L2 Error|drive_cmd")
215 if [ $Syslog -le 10 ]; then
216 Make_Json_List Middle "" "시스템 로그 점검" "에러 없음" "grep -i Error /var/log/messages" "이상없음" "$Success"
217 else
218 Make_Json_List Middle "" "시스템 로그 점검" "에러 없음" "grep -i Error /var/log/messages" "점검필요" "$Fail"
219 fi
220}
221
222# Network 상태 점검 결과 추출
223function Network_Check() {
224
225 # [ NIC 사용 현황]
226 OS_Version=$(awk '{print $(NF-1)}' /etc/redhat-release)
227 USE_Bond=$(ls -al /etc/sysconfig/network-scripts/ifcfg-bond* | egrep -w "ifcfg-bond0$|ifcfg-bond1$|ifcfg-bond2quot; -c 2>/dev/null)
228
229 case $OS_Version in
230
231 6.4 | 6.6 | 6.9)
232 Alias=$(grep -c 'alias bond' /etc/modprobe.d/bonding.conf)
233 ;;
234
235 5 | 5.4 | 5.7)
236 Alias=$(grep -c 'alias bond' /etc/modprobe.conf)
237 ;;
238
239 7.5.1804)
240 Alias=$(echo $USE_Bond)
241 ;;
242 esac
243
244 case $USE_Bond in
245
246 $Alias)
247 Make_Json_List Start "NetworkCheck" "NIC 사용 현황" "-" "ethtool ethX\\\ncat /etc/modprobe.conf\\\ncat /etc/modprobe.d/bonding.conf" "이상없음" "$Success"
248 ;;
249 *)
250 Make_Json_List Start "NetworkCheck" "NIC 사용 현황" "-" "ethtool ethX\\\ncat /etc/modprobe.conf\\\ncat /etc/modprobe.d/bonding.conf" "점검필요" "$Fail"
251 ;;
252 esac
253
254 # [ IP 설정 확인]
255
256 # vpc 사용 여부
257 ip addr show vpcmanage >/dev/null 2>/dev/null
258
259 case $? in
260
261 0)
262 Manage_IP=$(ip addr show vpcmanage | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }')
263 Service_IP=$(ip addr show vpcservice | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }')
264
265 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "$Manage_IP\\\n$Service_IP" "$Success"
266 ;;
267 *)
268 # bond2 사용 여부
269 ip addr show bond2 >/dev/null 2>/dev/null
270
271 case $? in
272
273 0)
274 Manage_IP=$(ip addr show bond0 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
275 Service1_IP=$(ip addr show bond1 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
276 Service2_IP=$(ip addr show bond2 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
277
278 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "Manage_IP: $Manage_IP, Service1_IP: $Service1_IP, Service2_IP : $Service2_IP" "$Success"
279 ;;
280 *)
281 Manage_IP=$(ip addr show bond0 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
282 Service_IP=$(ip addr show bond1 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
283
284 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "$Manage_IP: $Manage_IP, Service_IP: $Service_IP" "$Success"
285
286 ;;
287 esac
288 ;;
289 esac
290
291 # 관리 및 서비스 네트워크 Link 상태 점검
292 for list in $(grep "ONBOOT=yes" /etc/sysconfig/network-scripts/ifcfg-bond[0-9] | awk -F'ifcfg-' '{ split($2,arr,":"); print arr[1] }'); do
293 case $list in
294 bond1)
295 # 후지쯔 서버
296 if [[ $Server_Product =~ "PRIMERGY" ]]; then
297
298 NIC_Fail_Cnt=$(grep "$Active_NIC" /proc/net/bonding/bond1 -A 2 | grep Count | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
299 Active_NIC=$(grep "MASTER_SLAVE" /usr/local/castis/bfod/bfod.cfg | awk -F'=' '{ print $NF }')
300 grep "$Active_NIC" /proc/net/bonding/${list} -A 2 | grep "Status" | grep -vq "up"
301 Link_Status=$?
302 else
303
304 NIC_Fail_Cnt=$(grep Count /proc/net/bonding/$list | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
305 grep "Status" /proc/net/bonding/${list} | grep -vq "up"
306 Link_Status=$?
307 fi
308 ;;
309
310 *)
311 NIC_Fail_Cnt=$(grep Count /proc/net/bonding/$list | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
312 grep "Status" /proc/net/bonding/${list} | grep -vq "up"
313 Link_Status=$?
314 ;;
315 esac
316 done
317
318 # [ Routing 설정 점검]
319
320 #bond2 존재 여부
321 src_Cnt=$(ip route show | grep "src" | wc -l)
322 Static_IP_Cnt=$(grep "IPADDR" /etc/sysconfig/network-scripts/ifcfg-* | egrep -v "#|127.0.0.1" | wc -l)
323 case $src_Cnt in
324 $Static_IP_Cnt)
325 Make_Json_List End "" "Routing 설정 점검" "" "route -n routing 정보 확인" "이상없음" "$Success"
326 ;;
327 *)
328 Make_Json_List End "" "Routing 설정 점검" "" "route -n routing 정보 확인" "점검필요" "$Fail"
329 ;;
330 esac
331}
332
333# OS 상태 점검 결과 추출
334function OS_Check() {
335
336 OS_Limit_Space=70
337 L_Data_Limit_Space=90
338 V_Data_Limit_Space=92
339
340 # [ OS/Kerne 버전 ]
341
342 OS_Version=$(awk -F 'release' '{ print $2 }' /etc/redhat-release | awk '{ print $(NF-1) }')
343 Make_Json_List Start "OSCheck" "OS/Kernel 버전" "-" "cat /etc/redhat-release\\\n uname -a" "$OS_Version" "$Success"
344
345 # [ OS_디스크 용량 점검]
346 OS_Free_Space=$(df -h | grep -w "/" | awk '{ print $(NF-1) }' | cut -d'%' -f1)
347 if [ $OS_Free_Space -lt $OS_Limit_Space ]; then
348
349 Make_Json_List Middle "" "OS 디스크 용량 점검 - ( 마운트위치: / )" "${OS_Limit_Space}% 미만" "df -h 명령으로 / 의 사용률 확인" "이상없음" "$Success"
350 else
351 Make_Json_List Middle "" "OS 디스크 용량 점검 - ( 마운트위치: / )" "${OS_Limit_Space}% 미만" "df -h 명령으로 / 의 사용률 확인" "점검필요" "$Fail"
352 fi
353
354 # [ 스토리지_디스크 용량 점검]
355 Data_Fail_Cnt=0
356 case $1 in
357 LSM | ADC)
358 for list in $(df -h | egrep "/data" | grep "%" | awk '{ print $NF }'); do
359
360 if [ $(df -h | grep -w "$list" | awk '{ print $(NF-1) }' | cut -d'%' -f1) -gt $L_Data_Limit_Space ]; then ((Data_Fail_Cnt++)); fi
361 done
362
363 case $Data_Fail_Cnt in
364 0)
365 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${L_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "이상없음" "$Success"
366 ;;
367 *)
368 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${L_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "점검필요" "$Fail"
369 ;;
370 esac
371 ;;
372 VOD)
373
374 if df -h | egrep -q "/data"; then
375 for list in $(df -h | egrep "/data" | grep "%" | awk '{ print $NF }'); do
376 if [ $(df -h | grep -w "$list" | awk '{ print $(NF-1) }' | cut -d'%' -f1) -gt $V_Data_Limit_Space ]; then
377 ((Data_Fail_Cnt++))
378 fi
379 done
380 else
381 # /data 디렉토리가 없으면 점검필요로 처리
382 Data_Fail_Cnt=1
383 fi
384
385 case $Data_Fail_Cnt in
386
387 0)
388 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${V_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "이상없음" "$Success"
389 ;;
390 *)
391 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${V_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "점검필요" "$Fail"
392 ;;
393 esac
394 ;;
395 esac
396
397 # [ 시간동기화 확인]
398 ntpq -p | egrep -q '\+|\*'
399
400 case $? in
401 0)
402 Make_Json_List Middle "" "시간동기화 확인" "*220.73.142.71\\\n*220.73.142.73" "ntpq -p 명령으로 시간 동기화 동작 상태 확인" "이상없음" "$Success"
403 ;;
404 *)
405 Make_Json_List Middle "" "시간동기화 확인" "*220.73.142.71\\\n*220.73.142.73" "ntpq -p 명령으로 시간 동기화 동작 상태 확인" "점검필요" "$Fail"
406 ;;
407 esac
408
409 # GATEWAY PING 확인
410
411 ifconfig bond2 >/dev/null 2>/dev/null
412 if [ $? -eq 0 ]; then
413 Service_GW=($(ip route show | grep default -A 2 | grep "nexthop via" | awk -F'via ' '{ split($2,arr," "); print arr[1] }'))
414 Service_Interface=($(ip route show | grep default -A 2 | grep "nexthop via" | awk -F'dev ' '{ split($2,arr," "); print arr[1] }'))
415 else
416 Service_GW=($(ip route show | grep default -A 2 | grep via | awk -F'via ' '{ split($2,arr," "); print arr[1] }'))
417 Service_Interface=($(ip route show | grep default -A 2 | grep via | awk -F'dev ' '{ split($2,arr," "); print arr[1] }'))
418
419 fi
420 Service_GW_Result=0
421
422 for ((NIC_Cnt = 0; NIC_Cnt < ${#Service_GW[@]}; NIC_Cnt++)); do
423 ping -I ${Service_Interface[$NIC_Cnt]} ${Service_GW[$NIC_Cnt]} -c 1 >/dev/null 2>/dev/null
424 ((Service_GW_Result = $Service_GW_Result + $?))
425 done
426
427 if [ $Service_GW_Result -eq 0 ]; then
428 Make_Json_List Middle "" "GATEWAY_PING 확인" "정상" "ping '${Service_GW[*]}' (${Service_Interface[*]})" "이상없음" "$Success"
429 else
430 Make_Json_List Middle "" "GATEWAY_PING 확인" "정상" "ping '${Service_GW[*]}' (${Service_Interface[*]})" "점검필요" "$Fail"
431 fi
432
433 # [ 서버 부팅 시 스크립트 권한 확인, 고성능서버 설정 확인 등 ]
434
435 sum_Result=()
436
437 #crontab (파일 권한 및 소유자 확인)
438 ls -l /etc/crontab | awk '{ print $1 }' | egrep -q "^-rw-"
439 cron_Authority=$?
440 ls -ltr /etc/crontab | awk '{ print $3 }' | grep -q "root"
441 cron_Manager=$?
442
443 if [ $cron_Authority -eq 0 ] && [ $cron_Manager -eq 0 ]; then
444 cron_Result=0
445 else
446 cron_Result=" cron "
447 fi
448
449 #sysctl.conf (파일에 해당 문자열이 있는지 확인인)
450 grep -wq "TCP Setting by CASTIS" /etc/sysctl.conf
451 sysctl_Result=$?
452
453 if [ $sysctl_Result -ne 0 ]; then sysctl_Result=" sysctl "; fi
454
455 #rc.local (심볼릭 링크 설정 확인인)
456 ls -ltr /etc/rc.local | egrep "^lrwx" | awk '{ print $NF }' | egrep -q "rc.d/rc.local"
457 rclocal_Authority=$?
458 if [ $rclocal_Authority -ne 0 ]; then rclocal_Authority=" rclocal_Authority "; fi
459
460 Omission_Ps=()
461 case $1 in
462 LSM | ADC)
463 #AD node check
464 echo $(hostname) | grep -wq "AD"
465 AD_Check=$?
466
467 case $AD_Check in
468 0)
469 rc_local_Ps=("ServiceMonitorCtl" "NetIOCtl" "CiMonitoringAgentMonitor")
470 ;;
471 1)
472 rc_local_Ps=("ServiceMonitorCtl" "NetIOCtl" "LFMSinkModuleMonitor" "CiMonitoringAgentMonitor")
473 ;;
474 esac
475
476 # share storage check
477 grep -q "Virtual" /usr/local/castis/LoadBalancer2.cfg
478 Share_Data_Result=$?
479
480 if [ $Share_Data_Result -eq 0 ]; then rc_local_Ps+=("CenterFileManagerCtl"); fi
481 ;;
482 VOD)
483 # share storage check
484 grep -q "Shared_Base_Directory" /usr/local/castis/vod.cfg
485 Share_Data_Result=$?
486
487 rc_local_Ps=("ServiceMonitorCtl" "eStreamServer" "NetIOCtl" "ADMMonitor")
488 if [ $Share_Data_Result -eq 0 ]; then rc_local_Ps+=("CenterFileWorkerCtl"); fi
489 ;;
490 esac
491
492 for ((PS_Cnt = 0; PS_Cnt < ${#rc_local_Ps[@]}; PS_Cnt++)); do
493
494 grep -v '#' /etc/rc.local | grep -q "${rc_local_Ps[$PS_Cnt]}"
495 if [ $? -ne 0 ]; then Omission_Ps+=(${rc_local_Ps[$PS_Cnt]}); fi
496
497 done
498
499 for list in $cron_Result $sysctl_Result $rclocal_Authority; do
500 if [ "$list" != "0" ]; then sum_Result+=($list); fi
501 done
502
503 if [ ! $sum_Result ] && [ ! $Omission_Ps ]; then
504 Make_Json_List End "" "서버 부팅 시 스크립트 설정 누락 확인, 고성능 서버 설정 확인 등" "정상" "rc.local, crontab, sysctl.conf" "이상없음" "$Success"
505 else
506 Make_Json_List End "" "서버 부팅 시 스크립트 설정 누락 확인, 고성능 서버 설정 확인 등" "정상" "rc.local, crontab, sysctl.conf" "${sum_Result[*]} ${Omission_Ps[*]} 점검필요" "$Fail"
507 fi
508}
509
510# 이중화 점검
511function Cluster_Check() {
512
513 #[ 프로세스 이중화 테스트 점검 ]
514 grep -v "#" /usr/local/castis/svcmonitor.cfg | grep -q "Service1_My_Priority=0"
515 # Master_Cnt = 1 : backup, 0: Active
516 Master_Cnt=$?
517 VIP_Up_Fail_Cnt=0
518
519 for V_IP in $(grep "Representative_NIC" /usr/local/castis/svcmonitor.cfg | grep -v "#" | cut -d '=' -f2 | sort -u); do
520 ip addr show | grep -q "secondary ${V_IP}"
521 if [ $? -ne 0 ]; then ((VIP_Up_Fail_Cnt++)); fi
522 done
523
524 case $VIP_Up_Fail_Cnt in
525 0)
526 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "이상없음" "$Success"
527 return 0
528 ;;
529 *)
530 case $Master_Cnt in
531 0)
532 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "점검필요" "$Fail"
533 return 1
534 ;;
535 1)
536 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "이상없음" "$Success"
537 return 1
538 ;;
539 esac
540 ;;
541 esac
542
543}
544
545# 서비스 현황 점검
546Service_Solution_Status_Check() {
547
548 DAY=$(date +%F)
549 MONTH=$(date +%Y-%m)
550 EVENTLOG_DAY=$(date +%Y%m%d)
551 OS_Version=$(awk '{print $(NF-1)}' /etc/redhat-release)
552
553 # LSM 포트 변수 정의
554 LFMServer_PORT="8549"
555 LFMSinkModule_PORT="8550"
556 LoadBalancer2_PORT="50890"
557 ADSController_PORT="904"
558 ADSClient_PORT="911"
559 L_ADS_PORT="30000"
560 L_GSDM_PORT="18079"
561 L_NRM_PORT="18081"
562 file_requester_PORT="18084"
563 cache_manager_PORT="8081"
564 NetIOServer3_PORT="32128"
565 CiMonitoringAgent_PORT="30002"
566 ServiceMonitor_PORT="3511"
567
568 # VOD 포트 변수 정의
569 CiHVODServer_PORT="554"
570 ADM_PORT="40080"
571 ADS_PORT="30000"
572 NetIOServer3_PORT="32128"
573 cache_manager_PORT="8081"
574 CiMonitoringAgent_PORT="30002"
575
576 # LISTEN
577 LISTEN_OUTPUT=$(netstat -tnpl | awk '/LISTEN/ {split($4, a, ":"); print a[length(a)]}' | sed 's/\/.*//g')
578
579 # 누락된 항목을 저장할 변수
580 MISSING_ITEMS=""
581 ISSUES_FOUND=0
582
583 # LSM과 VOD 구분하여 점검
584 case $1 in
585 LSM)
586 for PORT_LSM in ServiceMonitor_PORT LFMServer_PORT LFMSinkModule_PORT LoadBalancer2_PORT ADSController_PORT ADSClient_PORT L_ADS_PORT L_GSDM_PORT L_NRM_PORT file_requester_PORT cache_manager_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
587 PORT=${!PORT_LSM}
588 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
589 MISSING_ITEMS+="$PORT_LSM($PORT), "
590 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
591 ISSUES_FOUND=1
592 printed_items[$PORT_LSM]=$PORT
593 fi
594 done
595 sleep 3
596 for PORT_LSM in ServiceMonitor_PORT LFMServer_PORT LFMSinkModule_PORT LoadBalancer2_PORT ADSController_PORT ADSClient_PORT L_ADS_PORT L_GSDM_PORT L_NRM_PORT file_requester_PORT cache_manager_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
597 PORT=${!PORT_LSM}
598 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
599 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
600 MISSING_ITEMS+="$PORT_LSM($PORT), "
601 ISSUES_FOUND=1
602 printed_items[$PORT_LSM]=$PORT
603 fi
604 fi
605 done
606 ;;
607 ADC)
608 for PORT_LSM in ServiceMonitor_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
609 PORT=${!PORT_LSM}
610 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
611 MISSING_ITEMS+="$PORT_LSM($PORT), "
612 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
613 ISSUES_FOUND=1
614 printed_items[$PORT_LSM]=$PORT
615 fi
616 done
617 sleep 3
618 for PORT_LSM in ServiceMonitor_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
619 PORT=${!PORT_LSM}
620 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
621 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
622 MISSING_ITEMS+="$PORT_LSM($PORT), "
623 ISSUES_FOUND=1
624 printed_items[$PORT_LSM]=$PORT
625 fi
626 fi
627 done
628 ;;
629 VOD)
630 # VOD 포트 점검
631 for PORT_VOD in CiHVODServer_PORT ADM_PORT ADS_PORT NetIOServer3_PORT cache_manager_PORT CiMonitoringAgent_PORT; do
632 PORT=${!PORT_VOD}
633 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
634 MISSING_ITEMS+="$PORT_LSM($PORT), "
635 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
636 ISSUES_FOUND=1
637 printed_items[$PORT_LSM]=$PORT
638 fi
639 done
640 sleep 3
641 for PORT_VOD in CiHVODServer_PORT ADM_PORT ADS_PORT NetIOServer3_PORT cache_manager_PORT CiMonitoringAgent_PORT; do
642 PORT=${!PORT_VOD}
643 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
644 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
645 MISSING_ITEMS+="$PORT_LSM($PORT), "
646 ISSUES_FOUND=1
647 printed_items[$PORT_LSM]=$PORT
648 fi
649 fi
650 done
651 ;;
652 esac
653
654 # 결과 출력
655 if [ $ISSUES_FOUND -eq 0 ]; then
656 Make_Json_List Single "ServiceCheck" " 포트 및 프로그램 상태 확인" "모두 LISTEN 상태" "netstat 명령으로 포트 및 프로그램 확인" "이상없음" "$Success"
657 else
658 MISSING_ITEMS_STR=${MISSING_ITEMS%, }
659 Make_Json_List Single "ServiceCheck" " 포트 및 프로그램 상태 확인" "LISTEN 확인 실패: $MISSING_ITEMS_STR" "netstat 명령으로 포트 및 프로그램 확인" "$MISSING_ITEMS_STR 점검필요" "$Fail"
660 fi
661
662 # CPU 사용률 확인
663 VMSTAT=$(vmstat 1 3 | awk '{print $15}' | sed -n 4p)
664
665 if [ "$1" != "VOD" ] && [ $2 -ne 0 ]; then
666 if [ $VMSTAT -ge 30 ]; then
667 Make_Json_List Single "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "이상없음" "$Success"
668 else
669 Make_Json_List Single "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "불량" "$Fail"
670 fi
671 else
672 if [ $VMSTAT -ge 30 ]; then
673 Make_Json_List Start "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "이상없음" "$Success"
674 else
675 Make_Json_List Start "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "불량" "$Fail"
676 fi
677 fi
678
679 # LBADMIN 상태 확인, 로그 기반 장애 내역 점검
680 if [ "$1" != "VOD" ]; then
681
682 if [ $2 -eq 0 ]; then
683 Server_Error_Cnt=$(/usr/local/castis/tools/vodcmd all status | grep "Error" | awk '{ print $1 }' | xargs echo)
684 if [ -z "$Server_Error_Cnt" ]; then
685
686 Make_Json_List Middle "" "LBAdmin 상태 확인" "-" "LBAdmin에서 LB서버 상태 확인 ( Running, Pause, Error )" "이상없음" "$Success"
687
688 else
689 Make_Json_List Middle "" "LBAdmin 상태 확인" "-" "LBAdmin에서 LB서버 상태 확인 ( Running, Pause, Error )" "${Server_Error_Cnt} 점검필요" "$Fail"
690 fi
691
692 LFM_DIST_LOG1=0
693 LFM_DIST_LOG2=0
694 GLB_LIMIT="30"
695 LB_EVENT_LIMIT="30"
696 LB_CI_LIMIT="30"
697 LFM_EVENT_LIMIT="30"
698 LFM_CI_LIMIT="30"
699 LFMSINK_LIMIT="30"
700 LNRM_LIMIT=30
701 LGSDM_LIMIT=30
702 ADS_LIMIT=30
703 ADC_LIMIT=30
704 ADSCONTROLLER_LIMIT=30
705 UNIXTIME_20=$(date +%s -d '20 minute ago')
706 #OTV
707 if [ $OS_Version == "7.5.1804" ]; then
708 #CiGLBServer
709 if [ -d /var/log/castis/glb_log ]; then
710 LOG_FILE=$(ls -ltr /var/log/castis/glb_log/GLB.log 2>/dev/null)
711 if [ ! -f "$LOG_FILE" ]; then
712 Make_Json_List Middle "" "CiGLBServer 동작 확인" "LOG 파일 없음" "CiGLBServer: $LOG_FILE 파일 없음" "GLB 로그파일 여부 점검필요" "$Fail"
713 else
714 GLB_CI_LOG=$(egrep -ic "error|Fail" "$LOG_FILE")
715 if [ "$GLB_CI_LOG" -ge "$GLB_LIMIT" ]; then
716 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 있음" "CiGLBServer: $LOG_FILE 'error|fail'" "점검필요" "$Fail"
717 else
718 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: $LOG_FILE 'error|fail'" "이상없음" "$Success"
719 fi
720 fi
721 else
722 Make_Json_List Middle "" "CiGLBServer 동작 확인" "디렉터리 없음" "CiGLBServer: /var/log/castis/glb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
723 fi
724 #LoadBalancer2
725 if [ -d /var/log/castis/lb_log ]; then
726 LOG_FILES="/var/log/castis/lb_log/LoadBalancer2.log 2>/dev/null"
727 if [ -z "$LOG_FILES" ]; then
728 Make_Json_List End "" "LoadBalancer2 동작 확인" "LOG 파일 없음" "LoadBalancer2: /var/log/castis/lb_log 파일 없음" "LoadBalancer2.log 로그파일 여부 점검필요" "$Fail"
729 else
730 LB_CI_LOG=$(egrep -i "error|Fail" $LOG_FILES | grep -vc "LimitCacheContent list" | awk -F':' '{ sum += $2 } END { print sum }')
731 LB_EVENT_LOG=$(egrep -ic "error|Fail" /var/log/castis/lb_log/EventLog[$EVENTLOG_DAY].log 2>/dev/null || echo 0)
732 if [ $LB_CI_LOG -ge $LB_CI_LIMIT ] || [ $LB_EVENT_LOG -ge $LB_EVENT_LIMIT ]; then
733 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 있음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "LoadBalancer2.log 점검필요" "$Fail"
734 else
735 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "이상없음" "$Success"
736 fi
737 fi
738 else
739 Make_Json_List End "" "LoadBalancer2 동작 확인" "디렉터리 없음" "LoadBalancer2: /var/log/castis/lb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
740 fi
741 else
742 #LFMServer
743 if [ -d /var/log/castis/lfm_log ]; then
744 # 최근 LFMServer.log" 파일 5개 선택택
745 LOG_FILES=$(ls /var/log/castis/lfm_log/$MONTH/${DAY}* | tail -5 | awk '{ print $NF }' 2>/dev/null)
746 if [ -z "$LOG_FILES" ]; then
747 Make_Json_List Middle "" "LFMServer 동작 확인" "LOG 파일 없음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log" "LFMServer.log 로그파일 여부 점검필요" "$Fail"
748 else
749 # 선택된 파일에서 에러와 실패 패턴 검색
750 LFM_CI_LOG=$(egrep -v "Infor|match|Source file" $LOG_FILES | egrep -ic "error|Fail" 2>/dev/null)
751 if [ $LFM_CI_LOG -ge $LFM_CI_LIMIT ]; then
752 Make_Json_List Middle "" "LFMServer 동작 확인" "Fail 또는 Error 있음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log 'error|fail'" "LFMServer.log 점검필요" "$Fail"
753 else
754 Make_Json_List Middle "" "LFMServer 동작 확인" "Fail 또는 Error 없음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log 'error|fail'" "이상없음" "$Success"
755 fi
756 fi
757 else
758 Make_Json_List Middle "" "LFMServer 동작 확인" "디렉터리 없음" "LFMServer: /var/log/castis/lfm_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
759 fi
760 # LFMSinkModule
761 if [ -d /var/log/castis/lfmsinkmodule_log ]; then
762 # 최근 LFMSinkModule.log 파일 5개 선택
763 LOG_FILES=$(ls /var/log/castis/lfmsinkmodule_log/${MONTH}/${DAY}* | tail -5 | awk '{ print $NF }' 2>/dev/null)
764 if [ -z "$LOG_FILES" ]; then
765 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "LOG 파일 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/LFMSinkModule.log" "LFMSinkModule.log 로그파일 여부 점검필요" "$Fail"
766 else
767 LFMSINKMODULE_LOG=$(egrep -ic "error|Fail" $LOG_FILES)
768 if [ $LFMSINKMODULE_LOG -ge $LFMSINK_LIMIT ]; then
769 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "Fail 또는 Error 있음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/LFMSinkModule.log 'error|fail'" "LFMSinkModule.log 점검필요" "$Fail"
770 else
771 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "Fail 또는 Error 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/EventLog.log 'error|fail'" "이상없음" "$Success"
772 fi
773 fi
774 else
775 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "디렉터리 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
776 fi
777
778 # CiGLBServer
779 if [ -d /var/log/castis/glb_log ]; then
780 LOG_FILE="/var/log/castis/glb_log/GLB.log"
781 if [ -z "$LOG_FILES" ]; then
782 Make_Json_List Middle "" "CiGLBServer 동작 확인" "LOG 파일 없음" "CiGLBServer: $LOG_FILE 파일 없음" "GLB 로그파일 여부 점검필요" "$Fail"
783 else
784 GLB_CI_LOG=$(egrep -ic "error|Fail" $LOG_FILES)
785 if [ $GLB_CI_LOG -ge $GLB_LIMIT ]; then
786 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: /var/log/castis/glb_log/EventLog.log 'error|fail'" "점검필요" "$Fail"
787 else
788 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: /var/log/castis/glb_log/EventLog.log 'error|fail'" "이상없음" "$Success"
789 fi
790 fi
791 else
792 Make_Json_List Middle "" "CiGLBServer 동작 확인" "디렉터리 없음" "CiGLBServer: /var/log/castis/glb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
793 fi
794
795 # L_ADS
796 if [ -d /var/log/castis/L_ads_log ]; then
797 LOG_FILES=$(ls /var/log/castis/L_ads_log/${MONTH}/${DAY}* 2>/dev/null)
798 if [ -z "$LOG_FILES" ]; then
799 Make_Json_List Middle "" "L_ADS 동작 확인" "LOG 파일 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log" "Event 로그파일 여부 점검필요" "$Fail"
800 else
801 ADS_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
802 if [ $ADS_LOG -ge $ADS_LIMIT ]; then
803 Make_Json_List Middle "" "L_ADS 동작 확인" "Fail 또는 Error 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log 'error|fail'" "점검필요" "$Fail"
804 else
805 Make_Json_List Middle "" "L_ADS 동작 확인" "Fail 또는 Error 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log 'error|fail'" "이상없음" "$Success"
806 fi
807 fi
808 else
809 Make_Json_List Middle "" "L_ADS 동작 확인" "디렉터리 없음" "L_ADS: /var/log/castis/L_ads_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
810 fi
811
812 # ADSController
813 if [ -d /var/log/castis/adscontroller_log ]; then
814 LOG_FILES=$(ls /var/log/castis/adscontroller_log/$MONTH/${DAY}* 2>/dev/null)
815 if [ -z "$LOG_FILES" ]; then
816 Make_Json_List Middle "" "ADSController 동작 확인" "LOG 파일 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log" "Event 로그파일 여부 점검필요" "$Fail"
817 else
818 ADSCONTROLLER_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
819 if [ $ADSCONTROLLER_LOG -ge $ADSCONTROLLER_LIMIT ]; then
820 Make_Json_List Middle "" "ADSController 동작 확인" "Fail 또는 Error 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log 'error|fail'" "EventLog.log 점검필요" "$Fail"
821 else
822 Make_Json_List Middle "" "ADSController 동작 확인" "Fail 또는 Error 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log 'error|fail'" "이상없음" "$Success"
823 fi
824 fi
825 else
826 Make_Json_List Middle "" "ADSController 동작 확인" "디렉터리 없음" "ADSController: /var/log/castis/adscontroller_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
827 fi
828
829 # ADSClient
830 if [ -d /var/log/castis/adc_log ]; then
831 LOG_FILES=$(ls /var/log/castis/adc_log/$MONTH/${DAY}* 2>/dev/null)
832 if [ -z "$LOG_FILES" ]; then
833 Make_Json_List Middle "" "ADSClient 동작 확인" "LOG 파일 없음" "ADSClient: /var/log/castis/adc_log/ADSClient.log " "ADSClient.log 로그파일 여부 점검필요" "$Fail"
834 else
835 ADC_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
836 if [ $ADC_LOG -ge $ADC_LIMIT ]; then
837 Make_Json_List Middle "" "ADSClient 동작 확인" "Fail 또는 Error 없음" "ADSClient: /var/log/castis/adc_log/EADSClient.log 'error|fail'" "ADSClient.log 점검필요" "$Fail"
838 else
839 Make_Json_List Middle "" "ADSClient 동작 확인" "Fail 또는 Error 없음" "ADSClient: /var/log/castis/adc_log/ADSClient.log 'error|fail'" "이상없음" "$Success"
840 fi
841 fi
842 else
843 Make_Json_List Middle "" "ADSClient 동작 확인" "디렉터리 없음" "ADSClient: /var/log/castis/adc_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
844 fi
845
846 # LoadBalancer2
847 if [ -d /var/log/castis/lb_log ]; then
848 LOG_FILES="/var/log/castis/lb_log/LoadBalancer2.log"
849 if [ -z "$LOG_FILES" ]; then
850 Make_Json_List End "" "LoadBalancer2 동작 확인" "LOG 파일 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log" "LoadBalancer2.log 로그파일 여부 점검필요" "$Fail"
851 else
852 LB_CI_LOG=$(egrep -i "error|Fail" $LOG_FILES | grep -vc "LimitCacheContent list")
853 LB_EVENT_LOG=$(egrep -ic "error|Fail" /var/log/castis/lb_log/EventLog[$EVENTLOG_DAY].log 2>/dev/null || echo 0)
854
855 if [ $LB_CI_LOG -ge $LB_CI_LIMIT ]; then
856 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 있음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "LoadBalancer2.log 점검필요" "$Fail"
857 else
858 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "이상없음" "$Success"
859 fi
860 fi
861 else
862 Make_Json_List End "" "LoadBalancer2 동작 확인" "디렉터리 없음" "LoadBalancer2: /var/log/castis/lb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
863 fi
864 fi
865 fi
866
867 else
868 VOD_LIMIT=50
869 NOMEDIA_RESET_LOG_LIMIT=200000
870
871 if [ -e "/var/log/castis/vod_log/EventLog[$EVENTLOG_DAY].log" ]; then
872 EVENT_VOD_NOMEDIA_RESET_LOG=$(grep "No Media" $(ls -ltr /var/log/castis/vod_log/${MONTH}/${DAY}* | awk '{ print $NF }') | grep ted | awk -F '[' '{ split($2,arr,"]"); sum+=arr[1] } END{print sum}')
873 EVENT_VOD_ERR_LOG=$(egrep -i "Error|Fail|Invalid File.*mpg" /var/log/castis/vod_log/EventLog[$EVENTLOG_DAY].log | egrep -v "OnHTTPGet Fail|Invalid URL. SETUP Fail|RTSP Message Parsing Error|Invalid|AsyncIO Error" | wc -l)
874 else
875 EVENT_VOD_NOMEDIA_RESET_LOG=0
876 EVENT_VOD_ERR_LOG=0
877 fi
878 i=0
879
880 if [ $EVENT_VOD_ERR_LOG -ge $VOD_LIMIT ]; then
881 Service_Streaming_Status_Array[$i]="VOD ERROR로그 $VOD_LIMIT건 이상 발생"
882 ((i++))
883 fi
884
885 if [ $EVENT_VOD_NOMEDIA_RESET_LOG -ge $NOMEDIA_RESET_LOG_LIMIT ]; then
886 Service_Streaming_Status_Array[$i]="VOD No Media로그 $EVENT_VOD_NOMEDIA_RESET_LOG건 이상 발생"
887 fi 2>/dev/null
888
889 if [ ${#Service_Streaming_Status_Array[@]} -ge 1 ]; then
890 Make_Json_List End "" "CIHVODServer 동작 확인" "Fail 또는 Error 없음" "'No Media|error|fail'" "${Service_Streaming_Status_Array[@]}" "$Fail"
891 else
892 Make_Json_List End "" "CIHVODServer 동작 확인" "Fail 또는 Error 없음" "'No Media|error|fail'" "이상없음" "$Success"
893 fi
894
895 fi
896
897}
898
899#local functions end
900case $1 in
901\? | -h)
902 f_Usage
903 exit
904 ;;
905esac
906
907#Json start
908
909case $2 in
910LSM | ADC)
911 HW_Check
912 Network_Check
913 OS_Check $2
914 Cluster_Check
915 Service_Solution_Status_Check $2 $?
916
917 hw_result=$(HW_Check)
918 network_result=$(Network_Check)
919 os_result=$(OS_Check $2)
920 cluster_result=$(Cluster_Check)
921 service_solution_result=$(Service_Solution_Status_Check $2 $?)
922
923 all_results="$hw_result\n$network_result\n$os_result\n$cluster_result\n$service_solution_result"
924 ;;
925VOD)
926 HW_Check
927 Network_Check
928 OS_Check $2
929 Service_Solution_Status_Check $2
930
931 hw_result=$(HW_Check)
932 network_result=$(Network_Check)
933 os_result=$(OS_Check $2)
934 service_result=$(Service_Solution_Status_Check $2)
935
936 all_results="$hw_result\n$network_result\n$os_result\n$service_result"
937 ;;
938
939esac
940
941# 결과 중 "점검필요", "불량", "이상 발생" 텍스트가 있어야 수집
942if echo -e "$all_results" | grep -E -q "점검필요|불량|이상 발생"; then
943 echo -e "\n[점검필요 항목]"
944 echo -e "$all_results" | grep -E -q "점검필요|불량|이상 발생"
945 echo -e "$all_results" | awk '/점검 내용/ {content=$0} /상태:/ && /점검필요/ {print content; print $0; print ""}'
946else
947 echo -e "\n모든 항목이 이상없음 상태입니다."
948fi
949
950
951}}}